package com.hj.calendar.service;

import com.hj.calendar.domain.dto.*;
import com.hj.calendar.domain.entity.CaldavConfig;
import com.hj.calendar.domain.vo.CaldavAccountVO;
import com.hj.calendar.domain.vo.FsDdCalendarVO;
import com.hj.mybatis.service.BaseService;
import com.hj.response.resp.RestfulResult;


import java.util.Date;
import java.util.List;

/**
 * @author hj
 * @Date 2023/5/22
 * @Description:
 */
public interface CaldavService extends BaseService<CaldavConfig> {

    /**
     * 获取钉钉/飞书的账号信息
     *
     * @return List--CaldavAccountVO
     */
    RestfulResult<List<CaldavAccountVO>> listAccount();

    /**
     * 查看账号详情信息
     *
     * @param dto DdFsDTO
     * @return CaldavAccountVO
     */
    RestfulResult<CaldavAccountVO> accountDetail(DdFsDTO dto);

    /**
     * 停用或启用
     *
     * @param dto DdFsStateDTO
     * @return Boolean
     */
    RestfulResult<Boolean> accountState(DdFsStateDTO dto);

    /**
     * 删除
     *
     * @param dto DdFsDeletedDTO
     * @return Boolean
     */
    RestfulResult<Boolean> accountDelete(DdFsDeletedDTO dto);

    /**
     * 上传或修改飞书,钉钉等日历的账号密码
     *
     * @param dto CaldavAccountDTO
     * @return CaldavAccountVO
     */
    RestfulResult<CaldavAccountVO> setupAccount(DdFsSetupDTO dto);

    /**
     * 获取飞书日历
     *
     * @param selectDay 查询日期
     * @return List<FsCaldavModel>
     */
    RestfulResult<List<FsDdCalendarVO>> fsCalendar(Date selectDay);

    /**
     * 根据飞书的配置获取飞书某天日历
     *
     * @param dto       CaldavDdFsDTO
     * @param selectDay selectDay
     * @return List<FsDdCalendarVO>
     */
    List<FsDdCalendarVO> listFsCalendar(CaldavDdFsDTO dto, Date selectDay);

    /**
     * 获取钉钉日历
     *
     * @param selectDay 查询日期
     * @return List<FsCaldavModel>
     */
    RestfulResult<List<FsDdCalendarVO>> ddCalendar(Date selectDay);

    /**
     * 根据钉钉的配置获取钉钉日历
     *
     * @param dto CaldavDdFsDTO
     * @return List<FsDdCalendarVO>
     */
    List<FsDdCalendarVO> listDdCalendar(CaldavDdFsDTO dto);


}
